package com.bdqn.newdream.service;

import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public  class Email {
	public static boolean email(String email,String key){
		try {
			// 创建Properties 类用于记录邮箱的一些属性
			final Properties props = new Properties();
			// 表示SMTP发送邮件，必须进行身份验证
			props.put("mail.smtp.auth", "true");
			//此处填写SMTP服务器
			props.put("mail.smtp.host", "smtp.163.com");
			//端口号，QQ邮箱给出了两个端口，但是另一个我一直使用不了，所以就给出这一个587
			props.put("mail.smtp.port", "465");
			// 此处填写你的账号
			props.put("mail.user", "h1160132377@163.com");
			// 此处的密码就是前面说的16位STMP口令
			props.put("mail.password", "Langzi1998");
			//下面两段代码是设置ssl和端口，不设置发送不出去。  
			props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
			props.setProperty("mail.transport.protocol", "smtp");// 设置传输协议  
			// 构建授权信息，用于进行SMTP进行身份验证
			Authenticator authenticator = new Authenticator() {

				protected PasswordAuthentication getPasswordAuthentication() {
					// 用户名、密码
					String userName = props.getProperty("mail.user");
					String password = props.getProperty("mail.password");
					return new PasswordAuthentication(userName, password);
				}
			};
			// 使用环境属性和授权信息，创建邮件会话
			Session mailSession = Session.getInstance(props, authenticator);
			// 创建邮件消息
			MimeMessage message = new MimeMessage(mailSession);
			// 设置发件人
			InternetAddress form = new InternetAddress(props.getProperty("mail.user"));
			message.setFrom(form);

			// 设置收件人的邮箱
			InternetAddress to = new InternetAddress(email);
			message.setRecipient(RecipientType.TO, to);

			// 设置邮件标题
			message.setSubject("密码修改");

			// 设置邮件的内容体
			message.setContent("<h1>验证码邮件:</h1><h3>新梦想提醒您，你正在修改密码，你的验证码为:"+key+"</h3>", "text/html;charset=UTF-8");
			// 最后当然就是发送邮件啦
			Transport.send(message);
			return true;
		} catch (AddressException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		} catch (MessagingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		}
	}
	public static boolean email2(String title,String email,String text){
		try {
			// 创建Properties 类用于记录邮箱的一些属性
			final Properties props = new Properties();
			// 表示SMTP发送邮件，必须进行身份验证
			props.put("mail.smtp.auth", "true");
			//此处填写SMTP服务器
			props.put("mail.smtp.host", "smtp.163.com");
			//端口号，QQ邮箱给出了两个端口，587
			props.put("mail.smtp.port", "465");
			// 此处填写你的账号
			props.put("mail.user", "h1160132377@163.com");
			// 此处的密码就是前面说的16位STMP口令
			props.put("mail.password", "Langzi1998");
			//下面两段代码是设置ssl和端口，不设置发送不出去。  
			props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
			props.setProperty("mail.transport.protocol", "smtp");// 设置传输协议  
			// 构建授权信息，用于进行SMTP进行身份验证
			Authenticator authenticator = new Authenticator() {

				protected PasswordAuthentication getPasswordAuthentication() {
					// 用户名、密码
					String userName = props.getProperty("mail.user");
					String password = props.getProperty("mail.password");
					return new PasswordAuthentication(userName, password);
				}
			};
			// 使用环境属性和授权信息，创建邮件会话
			Session mailSession = Session.getInstance(props, authenticator);
			// 创建邮件消息
			MimeMessage message = new MimeMessage(mailSession);
			// 设置发件人
			InternetAddress form = new InternetAddress(props.getProperty("mail.user"));
			message.setFrom(form);

			// 设置收件人的邮箱
			InternetAddress to = new InternetAddress(email);
			message.setRecipient(RecipientType.TO, to);

			// 设置邮件标题
			message.setSubject("新梦想用户名");

			// 设置邮件的内容体
			message.setContent("<h1>"+title+"</h1><h3>"+text+"</h3>", "text/html;charset=UTF-8");
			// 最后当然就是发送邮件啦
			Transport.send(message);
			return true;
		} catch (AddressException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		} catch (MessagingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		}
	}
	public static boolean newemail(String email,String key,String http,String nickname,String text){
		try {
			// 创建Properties 类用于记录邮箱的一些属性
			final Properties props = new Properties();
			// 表示SMTP发送邮件，必须进行身份验证
			props.put("mail.smtp.auth", "true");
			//此处填写SMTP服务器
			props.put("mail.smtp.host", "smtp.163.com");
			//端口号，QQ邮箱给出了两个端口，但是另一个我一直使用不了，所以就给出这一个587
			props.put("mail.smtp.port", "465");
			// 此处填写你的账号
			props.put("mail.user", "h1160132377@163.com");
			// 此处的密码就是前面说的16位STMP口令
			props.put("mail.password", "Langzi1998");
			//下面两段代码是设置ssl和端口，不设置发送不出去。  
			props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
			props.setProperty("mail.transport.protocol", "smtp");// 设置传输协议  
			// 构建授权信息，用于进行SMTP进行身份验证
			Authenticator authenticator = new Authenticator() {

				protected PasswordAuthentication getPasswordAuthentication() {
					// 用户名、密码
					String userName = props.getProperty("mail.user");
					String password = props.getProperty("mail.password");
					return new PasswordAuthentication(userName, password);
				}
			};
			// 使用环境属性和授权信息，创建邮件会话
			Session mailSession = Session.getInstance(props, authenticator);
			// 创建邮件消息
			MimeMessage message = new MimeMessage(mailSession);
			// 设置发件人
			InternetAddress form = new InternetAddress(props.getProperty("mail.user"));
			message.setFrom(form);

			// 设置收件人的邮箱
			InternetAddress to = new InternetAddress(email);
			message.setRecipient(RecipientType.TO, to);

			// 设置邮件标题
			message.setSubject("用户激活");

			// 设置邮件的内容体
			message.setContent("<h1>激活邮件:</h1><h3>新梦想提醒您，你正在激活用户昵称为:"+nickname+"确定是否是本人，若是本人操作请<a href='"+http+"?key="+key+"'>点击此处激活用户</a><br/><br/>若QQ邮箱拦截了访问请将此链接<br/><br/>"+http+"?key="+key+"<br/><br/>复制到游览器访问激活</h3><br/><br/><h2>"+text+"</h2>", "text/html;charset=UTF-8");
			// 最后当然就是发送邮件啦
			Transport.send(message);
			return true;
		} catch (AddressException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		} catch (MessagingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		}
	}
}

